package com.suke.czx.modules.performanceconfig.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.suke.czx.common.utils.FieldConstant;
import com.suke.czx.modules.performanceconfig.entity.PerformanceConfig;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 应用模块名称: 绩效参数持久层
 * 代码描述: 绩效参数持久层
 * copyright: AUZAR ALL RIGHTS RESERVED
 * company: AUZAR
 *
 * @author: 颜米晨
 * @date: 2022/06/11 14:21
 */
public interface PerformanceConfigMapper extends BaseMapper<PerformanceConfig> {

    /**
     * 获取绩效年份及版本
     * @return 获取绩效年份及版本map
     */
    @MapKey(value = FieldConstant.YEAR)
    Map<String, Map<String, String>> yearVersion();

    /**
     * 查询该年份版本下是否已有绩效配置的毛利率去除率
     * @param year 年份
     * @param version 版本
     * @return 毛利率去除率数据集
     */
    List<BigDecimal> searchMarginRemovalRate(@Param("year") String year, @Param("version") Integer version);

    /**
     * 查询该年份版本下是否已有绩效配置的备注
     * @param year 年份
     * @param version 版本
     * @return 备注数据集
     */
    List<String> searchNote(@Param("year") String year, @Param("version") Integer version);

    /**
     * 批量更新同一年份版本下的毛利率去除率和备注
     * @param year 年份
     * @param version 版本
     * @param marginRemovalRate 毛利率去除率
     * @param note 备注
     */
    void updateMarginRemovalRateAndNote(@Param("year") String year, @Param("version") Integer version,
                                        @Param("marginRemovalRate") BigDecimal marginRemovalRate, @Param("note") String note);

    /**
     * 查询该年份下现有最大版本号
     * @param year 年份
     * @return 版本号
     */
    Integer getMaxVersionByYear(@Param("year") String year);

}
